package com.example.myapplication;

import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import java.util.List;

public class Fragment1_ButtonAdapter extends RecyclerView.Adapter<Fragment1_ButtonAdapter.ViewHolder> {

    private final List<Fragment1_ButtonItem> buttonList;// 定义一个List来存储ButtonItem对象，这些对象包含了按钮的文本和点击后应启动的目标Activity信息
    private final Context context;// 定义一个Context对象，用于访问应用的资源和类，以及启动Activity等

    // 构造方法，用于初始化ButtonAdapter对象
    // 接收一个Context对象和一个ButtonItem对象的列表作为参数
    public Fragment1_ButtonAdapter(Context context, List<Fragment1_ButtonItem> buttonList) {
        this.context = context; // 将传入的context赋值给成员变量
        this.buttonList = buttonList; // 将传入的buttonList赋值给成员变量
    }

    // onCreateViewHolder方法用于创建新的ViewHolder实例
    // ViewGroup parent参数是RecyclerView的一个子视图，用于指定新视图的父容器
    // int viewType参数用于区分不同类型的视图（在这个例子中未使用）
    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        // 使用LayoutInflater从指定的布局文件（R.layout.item_button）中创建视图
        // parent.getContext()获取父容器的Context，false表示不立即将视图附加到父容器
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.fragment_1_item_button, parent, false);
        // 返回一个新的ViewHolder实例，并将创建的视图传入
        return new ViewHolder(view);
    }

    // onBindViewHolder方法用于绑定ViewHolder中的数据
    // ViewHolder holder参数是ViewHolder的实例，用于访问和更新视图
    // int position参数是当前项的索引
    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        // 从buttonList中获取当前索引对应的ButtonItem对象
        Fragment1_ButtonItem buttonItem = buttonList.get(position);
        // 设置按钮的文本为ButtonItem对象的文本
        holder.button.setText(buttonItem.getButtonText());

        // 设置按钮的点击监听器
        // 当按钮被点击时，创建一个Intent来启动buttonItem指定的目标Activity
        holder.button.setOnClickListener(v -> {
            Intent intent = new Intent(context, buttonItem.getTargetActivity());
            context.startActivity(intent); // 使用context启动目标Activity
        });
    }

    // getItemCount方法返回RecyclerView中项目的总数
    @Override
    public int getItemCount() {
        return buttonList.size(); // 返回buttonList的大小
    }

    // ViewHolder静态内部类，用于缓存RecyclerView中每个项目的视图引用
    static class ViewHolder extends RecyclerView.ViewHolder {
        // 定义一个Button对象，用于访问每个列表项的按钮视图
        Button button;

        // ViewHolder的构造方法，接收一个View对象作为参数
        // 这个View对象是从RecyclerView的布局文件中inflate得到的
        ViewHolder(View itemView) {
            super(itemView); // 调用父类的构造方法
            // 使用findViewById找到布局文件中定义的按钮视图，并赋值给button成员变量
            button = itemView.findViewById(R.id.button);
        }
    }
}